// 后端API基础URL - 修改为不包含端口的主机地址
const API_BASE_URL = 'http://localhost:8089'
// 导出API_BASE_URL供其他组件使用
export { API_BASE_URL }

/**
 * 上传图片到服务器
 * @param {File} file - 文件对象
 * @returns {Promise<{url: string}>} - 返回包含图片URL的Promise
 */
export function uploadCoverImage(file) {
  return new Promise((resolve, reject) => {
    const formData = new FormData();
    formData.append('file', file);
    
    fetch('/api/files/upload/cover', {
      method: 'POST',
      body: formData
    })
    .then(response => {
      if (!response.ok) {
        throw new Error(`上传失败: ${response.status}`);
      }
      return response.json();
    })
    .then(data => {
      resolve(data);
    })
    .catch(error => {
      console.error('上传图片时出错:', error);
      reject(error);
    });
  });
}

/**
 * 将相对路径转换为完整的图片URL
 * @param {string} path - 图片路径
 * @param {boolean} isFrontend - 是否为前台请求，默认为false
 * @returns {string} 完整的图片URL
 */
export function getFullImageUrl(path, isFrontend = false) {
  if (!path) return ''
  
  // 如果已经是完整的URL，直接返回
  if (path.startsWith('http://') || path.startsWith('https://')) {
    return path
  }
  
  // 处理文件名 - 从路径中提取文件名
  const fileName = path.split('/').pop()
  
  // 统一使用/images/{fileName}格式
  // 前台和后台使用相同的图片访问方式
  let imgPath = `/images/${fileName}`
  
  // 确保路径以/开头
  if (!imgPath.startsWith('/')) {
    imgPath = `/${imgPath}`
  }
  
  // 通过网关服务(8089端口)访问图片
  return `${API_BASE_URL}${imgPath}`
}

/**
 * 处理图片数据对象，转换成URL
 * @param {Object|string} imageData - 图片数据对象或字符串路径
 * @returns {string} 图片URL
 */
export function parseImageData(imageData) {
  // 如果是null或undefined，返回空字符串
  if (imageData == null) return ''
  
  // 如果是字符串，直接返回
  if (typeof imageData === 'string') return imageData
  
  // 如果是对象，直接获取url字段
  if (typeof imageData === 'object') {
    return imageData.url || ''
  }
  
  // 其他情况返回空字符串
  console.warn('无法解析的图片数据:', imageData)
  return ''
}

/**
 * 将完整URL转换为相对路径
 * @param {string} url - 完整URL
 * @returns {string} 相对路径
 */
export function getRelativePath(url) {
  if (!url) return ''
  
  // 如果不是完整URL，认为是相对路径，直接返回
  if (!url.startsWith('http://') && !url.startsWith('https://')) {
    return url
  }
  
  // 移除基础URL部分
  return url.replace(API_BASE_URL, '')
}

/**
 * 添加时间戳参数避免缓存问题
 * @param {string} url - 图片URL
 * @returns {string} 添加了时间戳的URL
 */
export function addCacheBuster(url) {
  if (!url) return url
  
  // 如果URL已经有查询参数，使用&添加时间戳，否则使用?
  const separator = url.includes('?') ? '&' : '?'
  return `${url}${separator}t=${new Date().getTime()}`
}

/**
 * 移除URL中的查询参数
 * @param {string} url - 图片URL
 * @returns {string} 没有查询参数的URL
 */
export function removeQueryParams(url) {
  if (!url) return url
  
  // 如果URL包含问号，截取问号前的部分
  return url.includes('?') ? url.split('?')[0] : url
}

/**
 * 处理特殊的外部上传路径
 * @param {string} path - 图片路径
 * @returns {string} 处理后的路径
 */
export function handleExternalUploads(path) {
  if (!path) return ''
  
  // 确保所有路径都以/开头
  if (!path.startsWith('/')) {
    path = `/${path}`
  }
  
  return path
} 